Field of the Invention
This invention relates generally to computer systems, and more particularly to cloud file storage systems. Even more particularly, this invention relates to reducing errors and data loss during synchronization of local and remote file systems.
Description of the Background Art
Cloud computing systems are known. In cloud computing systems, computing and storage services are provided to remote clients over a wide area network such as the Internet. In the case of storage, a client's local files can be stored on the cloud and accessed by the client remotely.
Often a client's file system will exist both in the client's local file storage system (e.g., a hard drive, network attached storage (NAS) device, etc.) and in the cloud. For example, a client might store a backup copy of its local file system in the cloud. Doing so is beneficial from the standpoints that the client has data security in the backup copy. However, the benefits of the backup are negated as more and more changes are made to the local file system. For example, it is common for the remote file system on the cloud to be significantly older than the local file system, putting the local file system at risk if it is damaged. Similarly, if changes are made to the remote file system, then the remote file system becomes different from the local file system and the user might get confused as to which file system is the most recent for a given object. Thus, it becomes a burden on the client to make sure the local and remote file systems are synchronized.
Methods for synchronizing the local and remote file systems exist. While these synchronization processes ease the burden on clients of keeping their local and remote file systems up to date, such synchronization processes can also cause problems. For example, if the synchronization process crashes, data can be lost. Additionally, synchronization processes can have race or error conditions that, unbeknownst to the user or software provider, corrupt the synchronization process. Accordingly, even though the synchronization would appear to have been successful, such hidden problems still cause data loss and are very difficult to identify and correct.
What is needed, therefore, is a system and method that facilitates reliable synchronization of a client's local and remote file systems. What is also needed is a system and method that prevents unintended data loss as a result of the synchronization process.